{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1b9d526a-ba0b-4a2b-9cd9-0d0960695fa1",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "模型预测准确率: 0.8666666666666667\n"
     ]
    },
    {
     "data": {
      "image/png": "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cuP//b//Z+zfv59rEWYHDx400tLSjAULFhi7du0y5s6dayQlJRlbtmzhWoTZiy++aLRr186YPXu28fzzzxsXXXSR0bVrV35GRYDqrPby9+92MP5Nj4nwYxi1S+PatWtnnHTSSUbHjh2NoqKiSDcpJrzxxhuGpEZf27dv55pE2LXXXms888wzhmHw9yMS1q5dawwaNMho166dkZWVZbzxxhuGYXAtws3lchn33Xef0bVrVyMxMdH4xS9+YRQWFhqGwbUIt7rhxzD8v/+tvTa2Y98wJuzevVuFhYUaNGiQOnXqFOnmQFwTM+FamAfXwjy4FpHl7/1vzbWJqfADAAAQE6u9AAAA3Ag/AAAgphB+AABATImJfX4AoK5Zs2bpggsuULt27VRWVqYLL7ww0k0CEEb0/AAIiaqqKn388ce6//77NWrUKNXU1NQ7PmTIEC1cuLDefaeffroyMjJ02mmnef1KSUnRX//611a3bcWKFdq8ebNKS0t1+eWX65VXXql3/MCBAzr//PN14MABGYZRbxNIu92uLVu2SJJcLpeOHj3a6vYACC/CD4CgcrlcuuSSS5SZmakhQ4Zo9+7dGjdunKqrq/XQQw/prbfekiQlJSU12o6+TZs2+r//+z+VlJR4/crNzVViYmKj77l27VqdeeaZAbfRXQ364osv1osvvqjt27fL5XJ5jr///vtKSkrSiSeeqO3bt+ucc85Rnz591KdPH5WXl2vkyJHq06ePzj77bP3zn/9sydsEIIIY9gIQVHFxcXr55Zdlt9s1aNAg/elPf/IMK11wwQUaMWKE/vWvf/l8blMahp/169dr1KhRatu2baPHvv766xozZoxSUlLq3V9RUaE1a9Zo8uTJOnr0qJxOp+Lj43XnnXdKkp5++mndd999+vrrr9W1a1e99dZb2rdvn+Li4jR06FA99NBDysjIULt27dSnT58A3hUAZkL4ARBULpfL07Pi5h7y+tWvfqXp06fr73//u9fn2my2Js9fNyD99NNPGjVqlCZOnKinn37a6+MHDhyoVatW1bvv7rvvVkpKiqZNmyaXy1XvnO+9957neVdeeaW6d++uX/ziF1q2bJni4+N1+PBhLV68WMnJyfrZz35G+AEsiPADIKi++eYbDRgwQElJSSotLdXIkSMVHx+vZ555RocOHdItt9wiSRoxYoTX51977bVq166d12P79u3z9M5Itb1An3zyibZs2eI1/PgKU6eeeqq++eYbSdLf//53FRUVadGiRZJqq3x/8skn6tKli9q3b68777xTRUVFuuSSSyRJb731lgYOHKiOHTtKqu0lGjduXCBvDQCTIPwACKrs7GxVVFRo8+bNOuuss/TMM88oIyNDPXv2VE5Ojt5//33l5+f7fP6zzz6rnJwcr8euvvrqerfbtGmjzMxMzwRkb9asWVNvSOz9999XZmam3n77bUnS888/ryFDhniO/+Mf/9CCBQuUk5OjWbNm6aSTTtLJJ5/smZ/08ssvex5rGEa9uUIArIHwAyAkHn/8cRmGoZKSEt1000169tln9f777+s3v/mNXn31Vc/jampqZBiGEhKC/+PI6XQqJyfHM5SVlZUlu92ujh07qrCwUKtWrdK2bdt09913e55jGIauv/56ZWdnyzAMOZ1Obd26Vffff78yMzM9j/vxxx/Vt29fvfnmm0FvN4DQYrUXgKD79ttvtWLFCvXq1Ut9+/bV4sWLVVpaqqqqKj3wwAM6cOCAvvnmG02bNk3du3fX+vXrPc+99tpr1aNHD69fS5cubVY7SktLdcIJJ3huV1RUqGPHjvr5z38ul8ulG264Qffee69SU1M9j3n99df18ssva+3atZozZ452796ttm3bauTIkSoqKtKECRP07rvv6sEHH/Q5PAfA3Oj5ARBUVVVVGjNmjO6++27P8FavXr3Us2dPnXjiiTr33HN19tlnKzU1VePGjdPNN99c7/nNGfZqyubNmz29NTU1NSorK5PdbpfNZlO/fv20Z88e3XTTTfWe88c//lF//OMf660qmzdvnqTanqRJkybpmmuukST2+AEsivADIKi2bNmizp07a/z48Z7wk5GRoc2bN+vEE0/0PG7NmjWNlqAH25o1a3TjjTfq7bff1gcffKATTzxRiYmJmjdvnr788ks5nU7t3r1bhw8f1q233qp3331Xy5cvV2FhoXbt2qXi4mINHjxYv//975WSkqI333xT5513ng4ePKgePXpo2LBhIW0/gNAg/AAIql69enk2MjQMQ4ZhSFK94CPV9sQ03PW5pqZGV199tdc9e6TanZdvv/32gNqxfv16ffnllxoxYoRWrlypXbt2ae7cubr55pv19ttv6+OPP9aTTz6pESNGKDc3V99++63i4uK0bds2ff/997rkkks0efJk9ejRQ0lJSXr33Xd1/fXX629/+5sWLFigJUuW6PHHH2/u2wPABAg/AELmyJEjqqqq8nqssrKy0bHExES99NJLPmttXX311V7Pd+GFF6qkpKTefS+99JLGjRunk08+Wf/zP/+jK6+8Ur/85S/VvXt3ffbZZzrxxBM1ffp0bd68WTNmzNAdd9whSZ4/pdrwdvvtt+v1119XSkqKnnjiCY0YMUJ/+MMfdPHFF+uaa65RYWGhHnrooWa8KwAizWa4fy0DgChTXV1db+7Onj17dMoppzR63M6dO3XyySd7LZ2xbt06xcfHq3///o2O7dq1S4mJicrIyAhuwwGEFOEHAADEFJa6AwCAmEL4AQAAMYXwAwAAYgrhBwAAxBTCDwAAiCmEHwAAEFMIPwAAIKYQfgAAQEwh/AAAgJjy/wMFPi5mIK0YgQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.model_selection import train_test_split\n",
    "raw_df=np.loadtxt('logi-y.txt',delimiter=',',encoding='utf-8')\n",
    "data=raw_df[:,[0,1]]\n",
    "target = raw_df[:, 2]\n",
    "x,y=data,target\n",
    "x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=1,test_size=30)\n",
    "from sklearn.metrics import accuracy_score\n",
    "model=LogisticRegression()\n",
    "model.fit(x_train,y_train)\n",
    "ac=accuracy_score(y_test,model.predict(x_test))\n",
    "print(\"模型预测准确率:\",ac)\n",
    "import matplotlib.pyplot as plt\n",
    "from  matplotlib.colors import ListedColormap\n",
    "N,M=500,500\n",
    "t1=np.linspace(0,100,N)\n",
    "t2=np.linspace(0,100,N)\n",
    "x1,x2=np.meshgrid(t1,t2)\n",
    "x_new=np.stack((x1.flat,x2.flat),axis=1)\n",
    "y_predict=model.predict(x_new)\n",
    "y_hat=y_predict.reshape(x1.shape)\n",
    "itis_cmap=ListedColormap([\"#ACF080\",\"#A0A0FF\"])\n",
    "plt.pcolormesh(x1,x2,y_hat,cmap=itis_cmap)\n",
    "plt.scatter(x[y==0,0],x[y==0,1],s=30,c='b',marker='o')\n",
    "plt.scatter(x[y==1,0],x[y==1,1],s=30,c='r',marker='^')\n",
    "plt.rcParams['font.sans-serif']='Simhei'\n",
    "plt.xlabel('科目1成绩')\n",
    "plt.ylabel('科目2成绩')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b05e456e-8967-44b3-b714-5327f2c5787b",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.13.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
